package cn.huxingyuan.util;

import java.security.SecureRandom;
import java.util.Random;

/**
 * @author Hu
 */
public class RandomStringUtils {
    // 定义可用的字符集合（数字+大写字母+小写字母）
    private static final String ALPHANUMERIC = 
        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    
    // 使用SecureRandom以获得更好的随机性
    private static final Random RANDOM = new SecureRandom();
    
    /**
     * 生成8位随机字母数字混合字符串
     * @return 8位随机字母数字字符串
     */
    public static String generate() {
        return generate(8);
    }
    
    /**
     * 生成指定长度的随机字母数字混合字符串
     * @param length 字符串长度
     * @return 随机字母数字字符串
     */
    public static String generate(int length) {
        if (length <= 0) {
            throw new IllegalArgumentException("Length must be positive");
        }
        
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            int randomIndex = RANDOM.nextInt(ALPHANUMERIC.length());
            sb.append(ALPHANUMERIC.charAt(randomIndex));
        }
        return sb.toString();
    }
    
    // 测试方法
    public static void main(String[] args) {
        System.out.println("8位随机字母数字: " + generate());
        System.out.println("10位随机字母数字: " + generate(10));
    }
}